#ifndef VSqlProc_H
#define VSqlProc_H					 
												   
#include "QtSql/QSqlQuery.h"
#include "VField.h"

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

class VSqlProc
{
public:
	VSqlProc(QSqlDatabase& db) : mQuery(db) {}

	void addParamIn (const QString& name) { mParamsIn .append(VField(name));}
	void addParamOut(const QString& name) { mParamsOut.append(VField(name));}

	bool setValueIn (const QString& name,const QVariant& value);
	//bool setValueIn (const QString& name,const VRecord&  fromRecord);
	QVariant valueIn(const QString& name) const;
	
	QVariant valueOut(const QString& name) const;
	//bool     valueOut(const QString& name,VRecord& toRecord) const;
	
	void prepare(const QString& procName);

	bool exec();
	bool next();

private:
	static VField* fieldPtr(const QList<VField>& fields,const QString& name);
	static VField* fieldPtr(const QList<VField>& fields,int index) { return const_cast<VField*>(&fields[index]);}

	QSqlQuery mQuery;
	QList<VField> mParamsIn;
	QList<VField> mParamsOut;
};

///////////////////////////////////////////////////////////////////////////////

#endif 
